package com.device;

public class DeviceFun {

    public static int Device_Handler;


    //指定串口号
    /**
     * @param Portstr
     * @return
     */
    public static native int Port(String Portstr);

    /**
     * @return
     */
    //串口初始化
    public static native int Init();

    /**
     * @return
     */
    public static native int Close(int porthandler);


    /**开门
     * @param porthandler,串口句柄
     * @param no，通道号
     * @param times，开门时间，触发时间，0x0000,一直开
     * @return
     */
    public static native int DoorOpen(int porthandler ,byte no,int times);

    /**关闭
     * @param porthandler,串口句柄
     * @param no，通道号，
     * @return
     */
    public static native int DoorClose(int porthandler,byte no);

    /**检测门状态
     * @param porthandler,串口句柄
     * @param no，通道号
     * @return
     */
    public static native int DoorCheck(int porthandler,byte no);

    //称重
    public static native int WeigherVersion(int porthandler,byte[] buf);

    //设置参数总计10个字节，每个字节含义如下，建议先获取再针对修改每个参数
    //所有的传感器采用相同的设置，不单独对每个传感器设置

/*  BYTE1 1	采样频率（10HZ/40HZ，默认40）
    BYTE2 1	滤波强度（1-5，默认5）
    BYTE3 1	保留
    BYTE4 1	保留
    BYTE5 1	分度值（1-100，默认1）
    BYTE6 1	追零范围（1-50，默认3）
    BYTE7 1	追零使能（0-3，默认3）
            0：关闭开机置零和动态追零
            1：关闭开机置，打开动态追零
            2：打开开机置零，关闭动态追零
            3：打开开机置零和动态追零
    BYTE8 1	动态跟踪范围追零使能（1-50，默认0）
    BYTE9 1	蠕变跟踪范围（0-10，默认5）
    BYTE10 1 稳定重量输出开关（0/1，默认0）*/

    //比较重要的为追零使能，自动售货机应该默认设置为1,即开机不能置零，动态追零
    //追零的含义：传感器变化在追零范围内，认为无变化，超过这个值后认为有变化

    /**设置参数
     * @param porthandler ,串口句柄
     * @param buf，返回数据
     * @return，=0 成功，其他值错误
     */
    public static native int WeigherSetParam(int porthandler,byte[] buf);


    /**获取参数
     * @param porthandler,串口句柄
     * @param dbuf
     * @return =0 成功，其他值错误
     */
    public static native int WeigherGetParam(int porthandler,byte[] dbuf);

    //先清零，再标定，
    //清零用于去皮，使当前的传感器处于零值状态，清零的作用是设置称重传感器空载的参考值
    //标定用于标定重量单位克的数字，比如1000,表示标定1000克传感器的状态
    //标定的作用是确定传感器的计量单位.
    //标定后保存当前传感器的状态。

    /** 单通道校正，清零
     * @param porthandler
     * @param no
     * @return =0 成功，其他值错误
     */
    public static native int WeigherAdjust(int porthandler,byte no);


    /**所有通道校正
     * @param porthandler
     * @return =0 成功，其他值错误
     */
    public static native int WeigherAdjustALL(int porthandler);

    /** 单通道标定
     *  * @param porthandler
     * @param no
     *  @param value 标定值，比如1000,表示标定1000克传感器的状态
     * @return =0 成功，其他值错误
     */
    public static native int WeigherCablierate(int porthandler,byte no,int value);


    /**所有通道标定
     * @param porthandler
     * @return =0 成功，其他值错误
     */
    public static native int WeigherCablierateALL(int porthandler,int value);

    /**获得单通道重量
     * @param porthandler,串口句柄
     * @param no，通道号，1~10
     * @param buf
     * @return =0 成功，其他值错误
     */
    public static native int WeigherGet(int porthandler,byte no,byte[] buf);

    /**，获取全部通道重量
     * @param porthandler,串口句柄
     * @param no，通道号 ，最大通道数
     * @param buf，
     * @return
     */
    public static native int WeigherGetAll(int porthandler,byte no,byte[] buf);


    //串口透传数据
    /**
     * @param porthandler,串口句柄
     * @param no，通道号
     * @param slen
     * @param sendbuf
     * @param rlen
     * @param recbuf
     * @param timeout
     * @return =0 成功，其他值错误
     */

    public static native int UartSendRecv(int porthandler,byte no,int slen,byte[] sendbuf,int[]rlen,byte[] recbuf,int timeout);

    static{
        System.loadLibrary("DEVdriver");
    }

}
